package com.uls.zsw.service;

import java.util.List;

import com.uls.hj.vo.TaskCommentVo;
import com.uls.zsw.domain.ElectricityBilling;
import com.uls.zsw.vo.BillingTaskCommentVo;

/**
 * 电费结算Service接口
 * 
 * @author zsw
 * @date 2024-12-28
 */
public interface IElectricityBillingService 
{
    /**
     * 查询电费结算
     * 
     * @param billingId 电费结算主键
     * @return 电费结算
     */
    public ElectricityBilling selectElectricityBillingByBillingId(Long billingId);

    /**
     * 查询电费结算列表
     * 
     * @param electricityBilling 电费结算
     * @return 电费结算集合
     */
    public List<ElectricityBilling> selectElectricityBillingList(ElectricityBilling electricityBilling);

    /**
     * 新增电费结算
     * 
     * @param electricityBilling 电费结算
     * @return 结果
     */
    public int insertElectricityBilling(ElectricityBilling electricityBilling);

    /**
     * 修改电费结算
     * 
     * @param electricityBilling 电费结算
     * @return 结果
     */
    public int updateElectricityBilling(ElectricityBilling electricityBilling);

    /**
     * 批量删除电费结算
     * 
     * @param billingIds 需要删除的电费结算主键集合
     * @return 结果
     */
    public int deleteElectricityBillingByBillingIds(Long[] billingIds);

    /**
     * 删除电费结算信息
     * 
     * @param billingId 电费结算主键
     * @return 结果
     */
    public int deleteElectricityBillingByBillingId(Long billingId);


    /**
     * 启动流程
     * @param billingId
     * @param userId
     */
    int submit(Long billingId, Long userId);

    /**
     * 未审批租单
     * @param userId
     * @param processDefinitionKey
     * @return
     */
    List<ElectricityBilling> noConfirmTask(Long userId,String processDefinitionKey);

    /**
     * 完成审批
     * @param electricityBilling
     * @param userId
     * @return
     */
    void completeTask(ElectricityBilling electricityBilling,Long userId);

    /**
     * 根据流程id查询历史审批数据
     * @param flowInstantId
     * @return
     */
    List<BillingTaskCommentVo> getTaskCommentList(Long flowInstantId);
}
